package controllers;

import java.util.List;

import models.Avaliacao;
import models.Filme;
import models.RepositorioAvaliacao;
import models.RepositorioFilme;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.Security;
import views.html.Avaliacao.atualizar;
import views.html.Avaliacao.editar;
import views.html.Avaliacao.inserir;
import views.html.Avaliacao.listar;
import views.html.Avaliacao.mostrar;
import dao.DAOAvaliacao;
import dao.DAOComentario;
import dao.DAOFilme;

@Security.Authenticated(Secured.class)
public class Avaliacoes extends Controller {

	private static Form<Avaliacao> formAvaliacao = new Form<Avaliacao>(Avaliacao.class);
	private static RepositorioAvaliacao repAvaliacao = new RepositorioAvaliacao(new DAOAvaliacao());

	public static int getNota(Integer id, String login) {
		DAOAvaliacao daonota = new DAOAvaliacao();
		return daonota.notaInf(id,login);
	}
	
	public static Result Inserir() {
		return ok(inserir.render(formAvaliacao));
	}

	public static Result inserido() {
		Form<Avaliacao> novaAvaliacao = formAvaliacao.bindFromRequest();
		Avaliacao avaliacao = novaAvaliacao.get();
		avaliacao.login = session("login");
		repAvaliacao.inserir(avaliacao);
		DAOFilme daofilme = new DAOFilme();
		Filme f = new Filme();
		f.idFilmania = avaliacao.idfilmania;
		daofilme.mednota(f);
		return ok("Avaliacao Cadastrado");
	}

	public static Result listar() {
		List<Avaliacao> avaliacao = repAvaliacao.todos();
		return ok(listar.render(avaliacao));
	}

	public static Result mostrar(Integer Idfilmania, String login) {
		Avaliacao avaliacao = repAvaliacao.procurar(Idfilmania, login);
		if (avaliacao == null)
			return notFound(" não encontrado");
		return ok(mostrar.render(avaliacao));
	}

	public static Result editar(Integer Idfilmania, String login) {
		Avaliacao avaliacao = repAvaliacao.procurar(Idfilmania, login);
		if (avaliacao == null){
			return notFound(" não encontrado");
		}else{
		return ok(editar.render(avaliacao));
		}
	}

	public static Result atualizar() {

		Form<Avaliacao> novaAvaliacao = formAvaliacao.bindFromRequest();
		Avaliacao avaliacao = novaAvaliacao.get();
		avaliacao.login = session("login");
		repAvaliacao.atualizar(avaliacao);
		DAOFilme daofilme = new DAOFilme();
		Filme f = new Filme();
		f.idFilmania = avaliacao.idfilmania;
		daofilme.mednota(f);
		return ok(atualizar.render(avaliacao));
	}

}
